home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / falcon / falclib5 / routs / setfv.s < prev    next >
Text File  |  1995-04-27  |  2KB  |  94 lines

  1. *
  2. * SETFV.S
  3. *
  4. *    @setfv
  5. *     Sets the falcon video registers. The data that is
  6. *     written to the video registers must be a .FV (Falcon Video)
  7. *     file. Supervisor only.
  8. * In     a0.l=adr. to Falcon Video data
  9. * Out     d0.l: 0=no error  -1=error, no FV data  -2=error, wrong monitor (not used yet)
  10. *     (destroys a0-a1)
  11. *
  12. *    @savefv
  13. *     Saves the falcon video registers to memory. Supervisor only.
  14. *     (destroys a0-a1)
  15. *
  16. *    @resorefv
  17. *     Restores the saved falcon video registers. Supervisor only.
  18. *     (destroys a0-a1)
  19. *
  20.  
  21.  
  22. @setfv        cmp.l    #'FVD2',(a0)+    4 bytes header
  23.         bne    .error
  24.         
  25. .ready        addq.l    #2,a0
  26.         move.l    $70,-(sp)
  27.         move    sr,-(sp)
  28.         move.l    #.vbl,$70
  29.         move    #$2300,sr
  30.         
  31.         move.l    $466,d0
  32. .wait        cmp.l    $466,d0
  33.         beq    .wait
  34.         
  35.         move.l    (a0)+,$ff820e    offset & vwrap
  36.         move.w    (a0)+,$ff8266    spshift
  37.         move.l    #$ff8282,a1    horizontal control registers
  38. .loop1        move    (a0)+,(a1)+
  39.         cmp.l    #$ff8292,a1
  40.         bne    .loop1
  41.         move.l    #$ff82a2,a1    vertical control registers
  42. .loop2        move    (a0)+,(a1)+
  43.         cmp.l    #$ff82ae,a1
  44.         bne    .loop2
  45.         move    (a0)+,$ff82c2    video control
  46.         move    (a0)+,$ff82c0    video clock
  47.         addq.l    #1,a0
  48.         move.b    (a0)+,$ff820a    video sync mode
  49.         move    (sp)+,sr
  50.         move.l    (sp)+,$70
  51.         moveq    #0,d0
  52.         rts
  53. .error        moveq    #-1,d0
  54.         rts
  55. .wrongmon    moveq    #-2,d0
  56.         rts
  57. .sm124        cmp.b    #0,(a0)
  58.         bne    .wrongmon
  59.         bra    .ready
  60. .vga        cmp.b    #2,(a0)
  61.         bne    .wrongmon
  62.         bra    .ready
  63. .vbl        addq.l    #1,$466
  64.         rte
  65.         
  66.  
  67. @savefv        lea    FVbuffer1298,a1
  68.         move.l    #'FVD2',(a1)+    4 bytes header
  69.         move.b    $ff8006,(a1)+    monitor type
  70.         move.b    $ff820a,(a1)+    sync
  71.         move.l    $ff820e,(a1)+    offset & vwrap
  72.         move.w    $ff8266,(a1)+    spshift
  73.         move.l    #$ff8282,a0    horizontal control registers
  74. .loop1        move    (a0)+,(a1)+
  75.         cmp.l    #$ff8292,a0
  76.         bne    .loop1
  77.         move.l    #$ff82a2,a0    vertical control registers
  78. .loop2        move    (a0)+,(a1)+
  79.         cmp.l    #$ff82ae,a0
  80.         bne    .loop2
  81.         move    $ff82c2,(a1)+    video control
  82.         move    $ff82c0,(a1)+    video clock
  83.         move.b    $ff8260,(a1)+    shifter resolution
  84.         move.b    $ff820a,(a1)+    video sync mode
  85.         rts
  86.         
  87. @restorefv    move.l    #FVbuffer1298,a0
  88.         bsr    @setfv
  89.         rts
  90.  
  91.  
  92. FVbuffer1298    ds.w    24
  93.  
  94.